//
// Created by 朱语 on 2022/9/9.
//

/*
 * 一些CPP编译原理的提醒：
 * 只有在指定了其类型的时候才会生成实际的代码，
 * 如果你只把模版的定义写在头文件中，
 * 那么你生成在使用模版的时候就只会有声明的定义部分，
 * 而没有其具体的实现，所以链接器在连接时会报错。
 *
 * 解决办法：
 * 1. 将定义和实现都写在头文件汇总中
 * 2. 在.h文件末尾添加#include xxx.cpp
 * 3. 分开写定义和实现，最后.h .cpp文件都要include
 */
#include "Stack.h"
//记得引用.cpp
#include "Stack.cpp"
#include <iostream>
using namespace std;

int main(){
    try{
        Stack<int> int_stack;
        Stack<string> string_stack;

        int_stack.push(12);
        int_stack.push(34);
        cout<<int_stack.empty()<<endl;

        int_stack.pop();
        cout<<int_stack.top()<<endl;
        int_stack.clear();

        string_stack.push("hello world");
        cout<<string_stack.top();
        string_stack.pop();
        string_stack.pop();

    }catch(exception const& ex){
        cerr<<"Exception:"<<ex.what()<<endl;
    }

}
